home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / compileall.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  5KB  |  199 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''Module/script to "compile" all .py files to .pyc (or .pyo) file.
  5.  
  6. When called as a script with arguments, this compiles the directories
  7. given as arguments recursively; the -l option prevents it from
  8. recursing into directories.
  9.  
  10. Without arguments, if compiles all modules on sys.path, without
  11. recursing into subdirectories.  (Even though it should do so for
  12. packages -- for now, you\'ll have to deal with packages separately.)
  13.  
  14. See module py_compile for details of the actual byte-compilation.
  15.  
  16. '''
  17. import os
  18. import sys
  19. import py_compile
  20. __all__ = [
  21.     'compile_dir',
  22.     'compile_path']
  23.  
  24. def compile_dir(dir, maxlevels = 10, ddir = None, force = 0, rx = None, quiet = 0):
  25.     '''Byte-compile all modules in the given directory tree.
  26.  
  27.     Arguments (only dir is required):
  28.  
  29.     dir:       the directory to byte-compile
  30.     maxlevels: maximum recursion level (default 10)
  31.     ddir:      if given, purported directory name (this is the
  32.                directory name that will show up in error messages)
  33.     force:     if 1, force compilation, even if timestamps are up-to-date
  34.     quiet:     if 1, be quiet during compilation
  35.  
  36.     '''
  37.     if not quiet:
  38.         print 'Listing', dir, '...'
  39.     
  40.     
  41.     try:
  42.         names = os.listdir(dir)
  43.     except os.error:
  44.         print "Can't list", dir
  45.         names = []
  46.  
  47.     names.sort()
  48.     success = 1
  49.     for name in names:
  50.         fullname = os.path.join(dir, name)
  51.         if ddir is not None:
  52.             dfile = os.path.join(ddir, name)
  53.         else:
  54.             dfile = None
  55.         if rx is not None:
  56.             mo = rx.search(fullname)
  57.             if mo:
  58.                 continue
  59.             
  60.         
  61.         if os.path.isfile(fullname):
  62.             head = name[:-3]
  63.             tail = name[-3:]
  64.             if tail == '.py':
  65.                 if not __debug__ or 'c':
  66.                     pass
  67.                 cfile = fullname + 'o'
  68.                 ftime = os.stat(fullname).st_mtime
  69.                 
  70.                 try:
  71.                     ctime = os.stat(cfile).st_mtime
  72.                 except os.error:
  73.                     ctime = 0
  74.  
  75.                 if ctime > ftime and not force:
  76.                     continue
  77.                 
  78.                 if not quiet:
  79.                     print 'Compiling', fullname, '...'
  80.                 
  81.                 
  82.                 try:
  83.                     ok = py_compile.compile(fullname, None, dfile, True)
  84.                 except KeyboardInterrupt:
  85.                     raise KeyboardInterrupt
  86.                 except py_compile.PyCompileError:
  87.                     err = None
  88.                     if quiet:
  89.                         print 'Compiling', fullname, '...'
  90.                     
  91.                     print err.msg
  92.                     success = 0
  93.                 except IOError:
  94.                     e = None
  95.                     print 'Sorry', e
  96.                     success = 0
  97.  
  98.                 if ok == 0:
  99.                     success = 0
  100.                 
  101.             
  102.         tail == '.py'
  103.         if maxlevels > 0 and name != os.curdir and name != os.pardir and os.path.isdir(fullname) and not os.path.islink(fullname):
  104.             if not compile_dir(fullname, maxlevels - 1, dfile, force, rx, quiet):
  105.                 success = 0
  106.             
  107.         compile_dir(fullname, maxlevels - 1, dfile, force, rx, quiet)
  108.     
  109.     return success
  110.  
  111.  
  112. def compile_path(skip_curdir = 1, maxlevels = 0, force = 0, quiet = 0):
  113.     '''Byte-compile all module on sys.path.
  114.  
  115.     Arguments (all optional):
  116.  
  117.     skip_curdir: if true, skip current directory (default true)
  118.     maxlevels:   max recursion level (default 0)
  119.     force: as for compile_dir() (default 0)
  120.     quiet: as for compile_dir() (default 0)
  121.  
  122.     '''
  123.     success = 1
  124.     for dir in sys.path:
  125.         success = None if (not dir or dir == os.curdir) and skip_curdir else compile_dir(dir, maxlevels, None, force, quiet = quiet)
  126.     
  127.     return success
  128.  
  129.  
  130. def main():
  131.     '''Script main program.'''
  132.     import getopt as getopt
  133.     
  134.     try:
  135.         (opts, args) = getopt.getopt(sys.argv[1:], 'lfqd:x:')
  136.     except getopt.error:
  137.         msg = None
  138.         print msg
  139.         print 'usage: python compileall.py [-l] [-f] [-q] [-d destdir] [-x regexp] [directory ...]'
  140.         print "-l: don't recurse down"
  141.         print '-f: force rebuild even if timestamps are up-to-date'
  142.         print '-q: quiet operation'
  143.         print '-d destdir: purported directory name for error messages'
  144.         print '   if no directory arguments, -l sys.path is assumed'
  145.         print '-x regexp: skip files matching the regular expression regexp'
  146.         print '   the regexp is search for in the full path of the file'
  147.         sys.exit(2)
  148.  
  149.     maxlevels = 10
  150.     ddir = None
  151.     force = 0
  152.     quiet = 0
  153.     rx = None
  154.     for o, a in opts:
  155.         if o == '-l':
  156.             maxlevels = 0
  157.         
  158.         if o == '-d':
  159.             ddir = a
  160.         
  161.         if o == '-f':
  162.             force = 1
  163.         
  164.         if o == '-q':
  165.             quiet = 1
  166.         
  167.         if o == '-x':
  168.             import re as re
  169.             rx = re.compile(a)
  170.             continue
  171.     
  172.     if ddir:
  173.         if len(args) != 1:
  174.             print '-d destdir require exactly one directory argument'
  175.             sys.exit(2)
  176.         
  177.     
  178.     success = 1
  179.     
  180.     try:
  181.         if args:
  182.             for dir in args:
  183.                 if not compile_dir(dir, maxlevels, ddir, force, rx, quiet):
  184.                     success = 0
  185.                     continue
  186.             
  187.         else:
  188.             success = compile_path()
  189.     except KeyboardInterrupt:
  190.         print '\n[interrupt]'
  191.         success = 0
  192.  
  193.     return success
  194.  
  195. if __name__ == '__main__':
  196.     exit_status = int(not main())
  197.     sys.exit(exit_status)
  198.  
  199.